Python常见错误之:字典在for循环中数据被覆盖 |
您所在的位置:网站首页 › fetch cursor into每一次循环数据会被覆盖吗 › Python常见错误之:字典在for循环中数据被覆盖 |
先看例子 tmp_lst = [] tmp_dict = {1:xx,2:xx,3:xx...} for i in range(5): for row in tmp_dict.get(i): row['count'] = i tmp_lst.append(row)最后会发现tmp_dict里的每一个元素的“count”都是4 这是因为所有的row都指向了同一个内存地址,可以用id(row)打出地址查看 解决办法: tmp_lst = [] tmp_dict = {1:xx,2:xx,3:xx...} for i in range(5): for row in tmp_dict.get(i): out_row = row.copy() out_row ['count'] = i tmp_lst.append(out_row)“在python中,对象赋值实际上是对象的引用。当创建一个对象,然后把它赋给另一个变量的时候,python并没有拷贝这个对象,而只是拷贝了这个对象的引用” 今日有感:如此简单感觉根本不可能会犯的错误,还是不经意间出现了,要加强底层学习,做事更加认真。 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |